package com.zxy.leetcode.lcci;

import java.util.Arrays;

/**
 * https://leetcode-cn.com/problems/string-to-url-lcci/
 *
 * URL化。编写一种方法，将字符串中的空格全部替换为%20。
 * 假定该字符串尾部有足够的空间存放新增字符，并且知道字符串的“真实”长度。
 * （注：用Java实现的话，请使用字符数组实现，以便直接在数组上操作。）
 */
public class Test0103 {

    public static void main(String[] args) {
        Test0103 test = new Test0103();
        System.out.println(test.replaceSpaces("Mr John Smith    ", 13));
        System.out.println(test.replaceSpaces("               ", 5));
        System.out.println(test.replaceSpaces("a b          ", 3));
    }

    public String replaceSpaces(String S, int length) {
        if (S == null || S.length() == 0) {
            return S;
        }

        char[] chars = S.toCharArray();
        int index = chars.length - 1;
        // 从后面开始填充，可以用上尾部的空格区域
        for (int i=length-1; i>=0; i--) {
            // %20
            if (chars[i] == ' ') {
                chars[index--] = '0';
                chars[index--] = '2';
                chars[index--] = '%';
            }else {
                chars[index--] = chars[i];
            }
        }

        // 尾部是足够的空格，不是空格刚刚好
        if (index >= 0) {
            chars = Arrays.copyOfRange(chars, index + 1, chars.length);
        }

        return new String(chars);
    }
}
